package com.afdor.rws.event.channel.filter;

import com.afdor.rws.event.Event;
import com.afdor.rws.event.config.EventConfig;
import lombok.NonNull;

/**
 * 事件拦截器
 *
 * @author 悭梵
 * @date Created in 2018-08-20 10:06
 */
public interface EventIntercept {

    /**
     * 设置配置信息
     *
     * @param config
     */
    void init(@NonNull EventConfig config);

    /**
     * 拦截事件
     * <ul>
     * <li>chain.intercept方法，表示事件被拦截，不做处理</li>
     * <li>chain.doIntercept方法，表示继续调用下一个拦截器，执行拦截事件操作</li>
     * </ul>
     *
     * @param event
     * @return
     */
    void doIntercept(@NonNull Event event, @NonNull EventInterceptChain chain);

    /**
     * 销毁
     */
    void destroy();
}
